home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 1
/
Cream of the Crop 1.iso
/
PROGRAM
/
DBVGAL17.ARJ
/
SRC_ASM.ARJ
/
VCRTC.ASM
< prev
next >
Wrap
Assembly Source File
|
1992-01-25
|
2KB
|
74 lines
name vcrtc ; VGA CRTC register routines
;
; int CRTCread_reg(int reg);
; int CRTCset_reg(int reg, int value);
; int CRTCset_regm(int reg, int value, int bitmask);
;
CRTC_CTRL_PORT EQU 03D4h
CRTC_DATA_PORT EQU 03D5h
REGNO equ [bp+06]
VALUE equ [bp+08]
BMASK equ [bp+0ah]
CRTC_TEXT segment byte public 'CODE'
public _CRTCread_reg
assume cs:CRTC_TEXT
_CRTCread_reg proc far
push bp
mov bp,sp
mov al,REGNO
mov dx,CRTC_CTRL_PORT
out dx,al
inc dx
in al,dx
xor ah,ah
pop bp
ret
_CRTCread_reg endp
;
public _CRTCset_reg
_CRTCset_reg proc far
push bp
mov bp,sp
mov ah,VALUE
@update:
mov al,REGNO
mov dx,CRTC_CTRL_PORT
out dx,ax
xor ax,ax
pop bp
ret
_CRTCset_reg endp
;
public _CRTCset_regm
_CRTCset_regm PROC far
push bp
mov bp,sp
mov al,REGNO ; read old value
mov dx,CRTC_CTRL_PORT
out dx,al
inc dx
in al,dx
mov bl,BMASK ; create new value
not bl ; !mask
and al,bl ; al=(!mask®(reg_num));
mov cl,al ; save for a microsecond
mov ah,VALUE
mov bl,BMASK
and ah,bl
or ah,cl ; leave value in ah for _CRTCset_reg
jmp @update ; jump into _CRTCset_reg
_CRTCset_regm ENDP
CRTC_TEXT ends
end